Install pkg-config in builder images#9297
Open
ShahanaFarooqui wants to merge 3 commits into
Open
Conversation
daywalker90
previously approved these changes
Jul 9, 2026
Collaborator
|
The installation instructions also need updating. I took the liberty to update arch linux instructions as a whole, since they were horribly outdated. |
madelinevibes
previously approved these changes
Jul 9, 2026
985d668 to
473265c
Compare
Collaborator
|
There were two problems with the docker build step. One was that it required the target arch's python headers and the other was that the vendored cmake is dynamically linked against |
cdecker
previously approved these changes
Jul 9, 2026
…images
Pinning coincurve to a git revision means it builds from source rather than
installing a prebuilt wheel, which needs pkg-config for its CMake build.
And with no system cmake in the image, scikit-build-core fetches the cmake
wheel from PyPI; the arm stages install python3-dev:${target_arch_dpkg},
which swaps in a target-arch python (under qemu), so uv resolves target-arch
wheels - and the armv7l/aarch64 cmake wheels need target-arch libatomic.so.1,
while only the amd64 libatomic1 was installed.
Regular CI installs both via .github/scripts/setup.sh, but the repro
Dockerfiles maintain their own package list.
Also updated Arch linux instructions to use necessary dependencies, uv and rust Removed python plugin instructions, they can not be generalized and this repo no longer has any python plugins that need extra dependencies in production. Python plugins from the plugins repo have their own documentation. Changelog-None
… target Pass the computed VERSION as a build-arg, mirroring the docker-release workflow. Without it the container's VERSION is set-but-empty, `VERSION ?=` in the Makefile won't overwrite it, the git-describe fallback never runs, and `make install-program` fails with "git is required for generating version information". Also add --no-push, so a release captain can do a full test build without publishing elementsproject/lightningd:$VERSION and :latest (the target always runs `docker buildx build --push`, since multi-arch images cannot be --load'ed into the classic docker store). The build only populates the builder's cache; a subsequent run without the flag pushes from cache quickly. Co-Authored-By: Claude <claude@users.noreply.github.com>
046b2de to
2a108e9
Compare
madelinevibes
approved these changes
Jul 10, 2026
Collaborator
The dependency issue is fixed but my run ends like this, not sure if that is ok. What do we think about this approach? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All three reproducible builds started failing after our last commit to pin coincurve builds from source. This is an environment gap in the repro images, not a problem with the coincurve pin itself.
coincurve==20.0.0shipped prebuilt wheels, so nothing was ever compiled duringuv sync. The git pin has no wheels, so the repro build now compiles coincurve from source, and its CMake build hard-requires pkg-config. Regular CI already installs pkg-config via.github/scripts/setup.sh, which is why PR CI passed; the repro Dockerfiles keep a separate apt list and were missing it.Failed Action: https://github.com/ElementsProject/lightning/actions/runs/28993800082
Changelog-None.